鐵人賽到今天第十八天,我最痛苦的時間大概是在 DAY-5 到 DAY-6 因為覺得寫不出自己想要寫的文章,沒有充足的時間做準備,慢慢到 DAY-10 11 之後就放下自己的心態,一次就打足夠的量吧!到前兩天我慢慢覺得每天晚上這樣打一點點東西的感覺還不錯,所以我這樣是越過了習慣養成的死亡低谷了嗎哈哈!廢話至此,感謝鐵人賽給我的一個磨練,讓我要正確地對自己做預期,不要期許自己做出太高的要求因為自己也做不到。
鐵人賽至此最大的遺憾是我沒有時間準備程式碼和數學式子,只能不斷廢話搭配一堆圖,但我也發現自己內心中真正在乎的觀念是什麼,希望在未來這一年中能根據這些觀念在寫出更多實務和能馬上讓大家上手操作的技術文章。
今天我們來到了 DAY 17 也就是目標函數構建的另一種方式,也就是說把會危及到我們模型使用上的所有風險,去做一個最小化。假如我是一個機器人,我有一個類神經網路訓練是讓他可以自由地走動,根據他每一步移動計算合理的下一步動作,那麼這時候他可能沒有一個特別的目標要去做,而可能就是單純至少不要跌倒,因此對於這個模型的應用場景來說,風險指標就是跌倒的風險,我們希望將其最小化。
根據每個人想要將模型應用到的領域不同,通常應用場景中的業務指標也會很不一樣,有些自由度很高的應用場景,可能就不存在簡單的業務指標,而是有一大堆風險指標,前面的機器人就是一個例子,你賣一個機器人給別人,你很難假設機器人一定要會去完成某個行為,但是你至少可以確定機器人不能有什麼行為,所以對自由度高的產品,我們通常更在乎的是怎麼把風險指標最小化。
俗話說,圓形你很容易描述,但是一個方框挖掉一個圓形是什麼形?這就很難描述了。
金融市場是一個較為特殊的市場,他的模型應用場景有非常確定單一的目標,就是要在市場上去進行某個特定的交易策略來達到一些目的,例如獲利或避險等,反而對於金融市場來說如果業務指標能達到,通常風險指標也就沒了(因為你如果能賺錢,就相對來說也是你就不會賠錢了,兩者是完全相反的描述。
但是機器人或是自由度很高的世界,要去應用類神經網路模型就不能這樣子,你總不可能認為機器人只要能走路,也就代表他不會跌倒了,因為中間牽扯的因素太多,兩者是稍稍有點不是完全相反的東西,因此你如果想用類神經網路來做一些自由度很高的模型,你務必要讓目標函數採用進風險指標。
一樣和我們前面幾日所說的一樣,根據你的業務可以抽象到不同層次,舉例來說,你可以抽象到機器人跌倒之後受傷的部位,給予每個部位一個評分然後總和,或是你可以只是單純他只要跨出一個錯誤的步伐(你可以觀測到的),就認為機器人可能存在更高的跌倒風險等。
實務上比較傾向於還是多用利益指標做最大化,因為你比較容易有信心,你如果看到你至少能訓練起一個模型,你才會有信心你的方法可能有用。但是對於部分問題沒有辦法,所以類神經網路應用啟發式演算法的時候,你務必要看你的模型實際應用的應用場景是什麼樣子,如果應用場景是非常高自由度的話,舉例來說,你用模型來做自然語言處理或是智慧客服之類的,可能存在比較開放性的問題,你就很難計算到底你這次服務或提供的答案是否真的符合,對你來說最好的評估方式還是從風險面下手,例如當你做智慧客服的時候你回覆別人之後,別人就想請真人來答,那就代表你的機器人客服可能存在答錯問題的風險,否則客戶不需要請真人客服解決等,這些都是一種方式。
當然實務上有時候我們也會用各種奇怪的方法,將依些利益指標用負數、倒數的方式讓問題對偶化,什麼意思呢?也就是說如果你目標是訓練出一個類神經網路應用在金融市場上十分良好,那你或許可以不要用你賺的錢,而是用你輸的錢去做最小化,例如 Draw Down 就是一個方法(指現在距離過往淨值最高點對比的損失金額,如果一直贏錢的話,這個值就會是零)
我下次應該會和大家分享一個東西,就是用基因規劃法做出來的各種目標函數的構建,我會分享 25 個金融市場上可以參考的目標函數,大家就可以明白一個目標函數構建可以多複雜,此外你也可以思考看看在你的應用領域之中,到底要採用哪種方式更適合。
今天整篇廢話呀,哈哈,或許讓部分朋友失望了,我只能承諾等鐵人賽結束之後慢慢回到部落格把文章打得更有系統和更可以實際操作的方式,來做看看。